<?php
class RegisterClassForm extends CFormModel
{

    public $name;
    public $birthday;
    public $email;
    public $cid;
    public $tel;
    public $verifyCode;
    public $username;

    public function init(){
        if(!Yii::app()->user->isGuest){
            /**
             * @var $user User
             */
            $user = User::model()->findByPk(Yii::app()->user->id);
            if($user !== null){
                $this->email = $user->email;
                $this->name = $user->display_name;
                $this->username = $user->username;
                if($user->birthday)
                {
                    $this->birthday = date('d/m/Y',$user->birthday);
                }
            }
        }
    }
    public function rules(){
        return array(
            array('name,email,tel,birthday,username','required'),
            array('email','email'),
            array('email','checkEmail'),
            array('birthday','date','format'=>'d/m/yyyy'),
            array('username','checkUser'),
            array('verifyCode', 'captcha', 'allowEmpty'=>!CCaptcha::checkRequirements()),
        );
    }

    public function checkEmail($attribute,$params){
        if(Yii::app()->user->isGuest){
            $user = User::model()->find('LOWER(email=?)', array(strtolower($this->email)));
            if($user !== null){
                $this->addError('email','Email này đã được dùng!');
            }
        }
    }
    public function checkUser($attribute,$params){
        if(Yii::app()->user->isGuest){
            $user = User::model()->find('LOWER(username=?)', array(strtolower($this->username)));
            if($user !== null){
                $this->addError('username','Tên đăng nhập này đã được dùng!');
            }
        }
    }
    public function attributeLabels(){
        return array(
            'name'=>'Họ tên',
            'birthday'=>'Ngày sinh',
            'tel'=>'Điện thoại',
            'verifyCode'=>'Mã xác thực',
            'username'=>'Tài khoản'
        );
    }

    public function register(){
        $student = new Students();
        $student->name = $this->name;
        $student->birthday = $this->birthday;
        $student->email = $this->email;
        $student->tel = $this->tel;
        /**
         * @var $gClass GuitarClass
         */
        $gClass = GuitarClass::model()->findByPk($this->cid);
        if(!Yii::app()->user->isGuest){
            $student->user_id = Yii::app()->user->id;
            $user = User::model()->findByPk($student->user_id);
            $user->training_id = $gClass->training->id;
            $user->update(array('training_id'));
            //send mail
            $message = new YiiMailMessage();

            $message->setTo(array($this->email => $this->name));
            $message->setFrom(array(Yii::app()->params['adminEmail'] => Yii::app()->name));
            $message->setSubject('Đăng ký học thành công');
            $body = 'Chào bạn: <b>'.$this->name.'</b><br>Bạn đã đăng ký thành công khóa học: <b>'.$gClass->title.'</b>';
            $message->setBody($body,'text/html');
            $message->view = 'register';
            Yii::app()->mail->send($message);
            Yii::app()->user->setFlash('register',
                'Bạn đã đăng ký thành công');
        }else{
            $user = new User();
            $user->email = $this->email;
            $user->username = $this->username;
            $user->display_name = $this->name;
            $user->active_code = $user->randomPw(10);
            $pass = $user->randomPw(6);
            $user->password = $user->hashPassword($pass);
            $user->is_validated = 2;
            $user->training_id = $gClass->training->id;

            if($user->save()){
                $student->user_id = $user->id;
                //Send mail
                $link = 'http://'.Yii::app()->request->getServerName();
                $link .= Yii::app()->createUrl('site/active',array('code'=>$user->active_code,'userid'=>$user->id));
                $body = 'Bạn vừa đăng ký học guitar tại <b>'.Yii::app()->name.'</b>. <br>Tài khoản truy cập:'.$user->username.'<br>Mật khẩu:'.$pass.'<br>.Trước khi đăng nhập vui lòng nhấn link bên dưới để kích hoạt tài khoản.</br>'.CHtml::link($link,$link);
                $this->sendActiveMail($user->email, $user->display_name, 'Đăng ký học Guitar', $body);
            }else{
                //echo '111';die;
            }
        }

        if($student->save()){
            $clst = new Clstudent();
            $clst->student_id =(int)$student->id;
            $clst->class_id = (int)$this->cid;
            if($clst->save()){
                return true;
            }else{
                var_dump($clst->errors);die;
            }
        }
        return false;
    }
    public function sendActiveMail($email, $name, $subject, $body)
    {
        $message = new YiiMailMessage();

        $message->setTo(array($email => $name));
        $message->setFrom(array(Yii::app()->params['adminEmail'] => Yii::app()->name));
        $message->setSubject($subject);
        $message->setBody($body,'text/html');
        $message->view = 'register';
        Yii::app()->mail->send($message);

        Yii::app()->user->setFlash('register',
            'Một email kích hoạt đã được gửi đến: ' . $email . '<br/>' .
                'Vui lòng kiểm tra email để kích hoạt tài khoản.');
    }
}
